//////////////////////////////////////////////////////////////////////////

#ifndef _MAINWINDOW_H_
#define _MAINWINDOW_H_

//////////////////////////////////////////////////////////////////////////

#include <QMainWindow>

#ifndef _DATABASE_H_
#include "database.h"
#endif

#ifndef _PATIENT_H_
#include "patient.h"
#endif

//////////////////////////////////////////////////////////////////////////

class EditPatientDialog;
class NewPatientDialog;
class FindDialog;
class NewResearchDialog;
class AllResearchesDialog;
class ResearchDialog;

//////////////////////////////////////////////////////////////////////////

namespace Ui
{
    class MainWindow;
}

//////////////////////////////////////////////////////////////////////////


/** Main window
*
*  @author  Anastasia Karpinska
*  @author  Roman Pasechnik
*  @since   Oct 17th, 2009
*  @updated Oct 18th, 2009
*/
class MainWindow : public QMainWindow
{
//////////////////////////////////////////////////////////////////////////

    Q_OBJECT

//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////


    /** Constructor */
    MainWindow( QWidget* _parent = 0 );


    /** Destructor */
    ~MainWindow();


//////////////////////////////////////////////////////////////////////////


    /** Get database */
    Database& GetDatabase();


    /** Get current patient */
    Patient& GetCurrPatient();


    /** Set current patient */
    void SetCurrPatient(const Patient& _patient);


    /** Set current patient */
    void ShowCurrentResearch();


//////////////////////////////////////////////////////////////////////////

private:

//////////////////////////////////////////////////////////////////////////


    /** Database */
    Database m_Database;


    /** Current patient */
    Patient m_CurrentPatient;


    /** UI form */
    Ui::MainWindow *ui;


    /** Find dialog */
    FindDialog* m_FindDialog;


    /** Edit patient dialog */
    EditPatientDialog* m_EditInfoDialog;


    /** New patient dialog */
    NewPatientDialog* m_NewPatientDialog;


    /** New research dialog */
    NewResearchDialog* m_NewResearchDialog;


    /** Research dialog */
    ResearchDialog* m_ResearchDialog;


    /** All researches dialog */
    AllResearchesDialog* m_AllResearchesDialog;


//////////////////////////////////////////////////////////////////////////


    /** Enable patient group box */
    void EnablePatientGroupBox();


    /** Disable patient group box */
    void DisablePatientGroupBox();


//////////////////////////////////////////////////////////////////////////

private slots:

//////////////////////////////////////////////////////////////////////////


    /** Edit patient info button pressed */
    void EditPatientInfo();


    /** Find patient button pressed */
    void FindPatient();


    /** New patient button pressed */
    void NewPatient();


    /** Delete patient button pressed */
    void DeletePatient();


    /** New research button pressed */
    void NewResearch();


    /** New research button pressed */
    void AllResearches();


//////////////////////////////////////////////////////////////////////////
};


//////////////////////////////////////////////////////////////////////////

#endif // _MAINWINDOW_H_

//////////////////////////////////////////////////////////////////////////
